//package org.example.controller.douban;
//
//import org.openqa.selenium.WebElement;
//import org.openqa.selenium.chrome.ChromeDriver;
//import org.openqa.selenium.chrome.ChromeOptions;
//import org.openqa.selenium.remote.RemoteWebDriver;
//import org.springframework.stereotype.Component;
//import us.codecraft.webmagic.Page;
//import us.codecraft.webmagic.Request;
//import us.codecraft.webmagic.Task;
//import us.codecraft.webmagic.downloader.Downloader;
//import us.codecraft.webmagic.selector.PlainText;
//
//import java.util.List;
//
//@Component
//public class DouBanDownloader implements Downloader {
//
//
//    private RemoteWebDriver driver;
//
//    //   构造方法中初始化无头浏览器
//    public DouBanDownloader() {
//        //创建配置信息
//        System.setProperty("webdriver.chrome.driver", "C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe");
//        ChromeOptions chromeOptions = new ChromeOptions();
////        所在headless模式（必须）  无头模式
////        chromeOptions.addArguments("--headless");
////        设置浏览器窗口的大小（非必填）
//        chromeOptions.addArguments("--window-size=1366,700");
////        4.基于配置对象创建RemoteWebDriver对象
//        driver = new ChromeDriver(chromeOptions);
//    }
//
//
//    @Override
//    public Page download(Request request, Task task) {
//        try {
//            //载页面的业务逻辑
//            String url = request.getUrl();
////        从request对象中取要访问的url
//            if (!"http://nextpage.com".equals(url)) {
//                driver.get(url);
//                List<WebElement> list = driver.findElementsByCssSelector("#sitebox dl");
//                if (list.size() > 0) {
//                    driver.executeScript("window.scrollTo(0,document.body.scrollHeight -300)");
//                    Thread.sleep(2000);
////          从浏览器中取html
//                    String html = driver.getPageSource();
//                    //        需要把结果封装为Page对象
//                    Page page = createPage(html, driver.getCurrentUrl());
//                    return page;
//                }
//                String html = driver.getPageSource();
//                Page page = createPage(html, driver.getCurrentUrl());
//                return page;
//            } else {
////                   3如果是翻页处理
////                从request对象中取附件翻页之前的url
//                String curUrl = request.getExtra("url");
//                driver.get(curUrl);
////                点击翻页按钮 翻到第二页
//                driver.findElementByCssSelector("#pagelink > a:nth-child(13)").click();
//                Thread.sleep(2000);
//                driver.executeScript("window.scrollTo(0,document.body.scrollHeight -300)");
//                Thread.sleep(2000);
//                String html= driver.getPageSource();
//                Page page = createPage(html, driver.getCurrentUrl());
//                return page;
//            }
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    @Override
//    public void setThread(int i) {
//
//    }
//
//    //将html封装成Page对象
//    private Page createPage(String html, String url) {
//        Page page = new Page();
//        page.setRawText(html);
//        page.setUrl(new PlainText(url));
////        设置一个request对象
//        page.setRequest(new Request(url));
////        设置抓取成功的标志
//        page.setDownloadSuccess(true);
//        return page;
//
//    }
//}
